1. Field of the Invention
The present invention relates to identifying a server to provide a client device a distributed service, the server selected from among a plurality of distributed servers based on a locality of the client device.
2. Description of the Related Art
Distributed services such as Web-based search engines, for example the search site offered by Google® on the World Wide Web having the domain name “google.com”, are based on execution of the distributed services by distributed servers, also referred to as grid computing, where the distributed servers are configured for distributing the load associated with providing the distributed services. In particular, a client browser that attempts to access the Web service at the domain name “google.com” will be directed randomly to one of the distributed servers to ensure an even load-balancing among the servers. Load balancing is described in further detail in the Internet Engineering Task Force (IETF) Request for Comments (RFC) 2782, and in the above-incorporated parent application. Other factors also may be used to direct a client browser to a given server; a client browser may be directed to the previously-used server if the client browser previously accessed Web-based e-mail, in order to enable the utilization of user data having been transferred to the previously-used server.
In addition, distributed services such as web-based search services may be offered by a provider such as Google® based on worldwide distribution of data centers, where each data center has its own corresponding set of distributed servers for providing the corresponding distributed service. In particular, worldwide distribution of data centers solves the problem of worldwide propagation delays that otherwise would be encountered due to the propagation limitations to the speed of light and speed of data signals through optical fiber and copper.
However, a given data center cannot be selected unless the user sends an HTTP request to the appropriate domain name: each data center is identified by its own corresponding domain name, for example based on a country-specific extension (e.g., “.uk”, “.de”, “.nz”, “.jp”) that identifies the country (e.g., United Kingdom, Germany, New Zealand, Japan) in which the corresponding data center resides; hence, a user in Japan could access the data center in Japan or United States based on entering the appropriate domain name “google.co.jp” or “google.com”, respectively. Conversely, a user in United States can access the data center in Japan simply by entering the appropriate domain name “google.co.jp”. Hence, there is no optimization of service or reduction in propagation delay if the user selects a distant domain name, for example a user in United States selecting the data center in Japan, since in this case the user would be directed to one of the servers in the Japan data center. Rather, a conventional domain name system (DNS) query would resolve the domain name having the country-specific extension to a specific IP address, in this case of a device located within the country.
Domain name system (DNS) servers, as described in the Internet Engineering Task Force (IETF) Request for Comments (RFC) 1034 and RFC 1035, are further described in detail in the above-incorporated parent application. In summary, a conventional DNS server may be configured for responding to a query by providing a prescribed resolution, or a list of prescribed resolutions. Each of the resolutions supplied by the DNS server are stored statically within (or local to) the DNS server, resulting in “prescribed” resolutions.
Hence, existing systems fail to provide any resolution for a given service that is based on attributes of the client device.